package com.huantai.common.consts;

/**
 * 常用正则表达式常量
 * 
 * @author Ma Chao
 * @version 2018年5月4日 下午1:39:45
 */
public final class RegularConst {
    private RegularConst() {}

    /**
     * 正整数
     */
    public final class PositiveInteger {
        private PositiveInteger() {}

        /** 表达式 */
        public static final String EXPRESSION = "^\\d+$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "必须是正整数！";
    }

    /**
     * 金额，最多2位小数的正实数
     */
    public final class AmountOfMoney {
        private AmountOfMoney() {}

        /** 表达式 */
        public static final String EXPRESSION = "^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "金额必须是正实数，最多2位小数！";
    }

    /**
     * 邮箱地址
     */
    public final class Email {
        private Email() {}

        /** 表达式 */
        public static final String EXPRESSION =
                "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "邮箱格式不正确！";
    }

    /**
     * 手机号码
     */
    public final class CellphoneNumber {
        private CellphoneNumber() {}

        /** 表达式，1开头，11位数字即可 */
        public static final String EXPRESSION = "^1\\d{10}$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "手机号码格式不正确！";
    }

    /**
     * 身份证号码
     */
    public final class IdCardNumberAll {
        private IdCardNumberAll() {}

        /** 表达式 */
        public static final String EXPRESSION =
                "(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}[0-9Xx]$)";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "身份证号码格式不正确！";
    }

    /**
     * 15位身份证号码
     */
    public final class IdCardNumber15 {
        private IdCardNumber15() {}

        /** 表达式 */
        public static final String EXPRESSION =
                "^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}[0-9Xx]$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "15位身份证号码格式不正确！";
    }

    /**
     * 18位身份证号码
     */
    public final class IdCardNumber18 {
        private IdCardNumber18() {}

        /** 表达式 */
        public static final String EXPRESSION =
                "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "18位身份证号码格式不正确！";
    }

    /**
     * IP地址，V4
     */
    public final class IpAddrV4 {
        private IpAddrV4() {}

        /** 表达式 */
        public static final String EXPRESSION =
                "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])(\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)){3}$";
        /** 验证失败提示信息 */
        public static final String MESSAGE = "IPv4地址格式不正确！";
    }

    /** 大部分汉字 */
    public static final String CHINESE_IDEOGRAPH = "[\u4e00-\u9fa5]";
}
